// 数据库操作
const mongoose = require('mongoose');
// 对象规则验证
const Joi = require('joi');

const {
	Schema
} = mongoose;

// 定义用户地址集合规则
const AddressModel = new Schema({
	// 联系人
	contact: {
		type: String,
		required: true
	},
	// 联系电话
	contact_line: {
		type: Number,
		minlength: 11,
		maxlength: 11,
		required: true
	},
	// 地址
	address: [{
		type: String,
		required: true
	}],
	// 门牌号
	house_number: {
		type: String,
		default: ''
	},
	// 是否设为默认
	is_default: {
		type: Boolean,
		default: false
	},
	// 添加地址所属用户
	user_id: {
		type: mongoose.Schema.Types.ObjectId,
		default: ''
	},
	// 添加时间
	add_time: {
		type: Date,
		default: Date.now
	}
	
}, {
	versionKey: false
});

// 轮播图集合类
const Address = mongoose.model('address', AddressModel,'address');

// 添加用户地址格式校验
const validateAddress = address => {
	// 定义对象验证规则
	const schema = {
		contact: Joi.string().required().error(new Error('联系人为空')),
		contact_line: Joi.string().min(11).max(11).required().regex(/^1[3|4|5|7|8][0-9]{9}$/).error(new Error('手机号不符合验证规则')),
		address: Joi.string().required().error(new Error('地址不符合验证规则')),
		house_number: Joi.string().required().error(new Error('门牌号不符合验证规则')),
	};
	// 验证
	return Joi.validate(address, schema, {
		// 检测到所有错误
		abortEarly: false,
		// 允许对象包含被忽略的未知键
		allowUnknown: true
	});
}


// 导出对象
module.exports = {
	Address,
	validateAddress
};
